﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Studio7i.Dominio;

namespace Studio7i.Persistencia.EF
{
    public class LocalDAO : ILocalDAO
    {
        //
        public Local Crear(Local localACrear)
        {
            using (EFContext db = new EFContext(ConexionUtil.ObtenerCadena()))
            {
                int? codigo = db.Locales.Select(l => (int?)l.Codigo).Max();
                localACrear.Codigo = (codigo ?? 0) + 1;
                db.Locales.Add(localACrear);
                db.SaveChanges();
            }
            return Obtener(localACrear.Codigo);
        }

        public Local Obtener(int codigo)
        {
            using (EFContext db = new EFContext(ConexionUtil.ObtenerCadena()))
            {
                var local = from l in db.Locales
                            where l.Codigo == codigo
                            select l;
                return local.SingleOrDefault();
            }
        }

        public Local Modificar(Local localAModificar)
        {            
            using (EFContext db = new EFContext(ConexionUtil.ObtenerCadena()))
            {
                Local local = db.Locales.Single(l => l.Codigo == localAModificar.Codigo);
                local.Nombre = localAModificar.Nombre;
                local.Direccion = localAModificar.Direccion;
                db.SaveChanges();
                return local;
            }
        }

        public void Eliminar(Local localAEliminar)
        {
            using (EFContext db = new EFContext(ConexionUtil.ObtenerCadena()))
            {
                Local local = db.Locales.Single(l => l.Codigo == localAEliminar.Codigo);
                db.Locales.Remove(local);
                db.SaveChanges();
            }
        }

        //
        public ICollection<Local> ListarTodos()
        {
            using (EFContext db = new EFContext(ConexionUtil.ObtenerCadena()))
            {
                var resultado = from l in db.Locales
                                select l;
                return resultado.ToList();
            }
        }
        public ICollection<Local> ListarXNombre(string nombre)
        {
            using (EFContext db = new EFContext(ConexionUtil.ObtenerCadena()))
            {
                var resultado = from l in db.Locales
                                where l.Nombre.Contains(nombre)
                                select l;
                return resultado.ToList();
            }
        }

    }
}